home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / magic / d / mtfonts.d < prev    next >
Text File  |  1997-10-26  |  7KB  |  162 lines

  1. (*----------------------------------------------------------------------*
  2.  *                                                                      *
  3.  *  MAGICTOOLS   Modula's  All purpose  GEM  Interface  Cadre  Toolbox  *
  4.  *               ÿ         ÿ            ÿ    ÿ          ÿ               *
  5.  *----------------------------------------------------------------------*
  6.  * Version 3.30  02.02.1992     (C)90/91/92 by Peter Hellinger Software *
  7.  *----------------------------------------------------------------------*
  8.  *            Dieses Modul ist urheberrechtlich geschtzt.              *
  9.  *                                                                      *
  10.  * Die Ver”ffentlichung des Quelltextes oder Teilen daraus, sowie die   *
  11.  * Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
  12.  * oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail-    *
  13.  * boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen    *
  14.  * Einverst„ndnisserkl„rung des Autors.                                 *
  15.  *                                                                      *
  16.  * Die Verbreitung des Moduls als Teil eines gelinkten Programms ist    *
  17.  * fr Lizenznehmer ausdrcklich erlaubt!  Der Autor beh„lt sich das    *
  18.  * Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
  19.  * widerrufen.                                                          *
  20.  *----------------------------------------------------------------------*)
  21.  
  22. (*----------------------------------------------------------------------*
  23.  * mtFonts      Fontfunktionen. Die Philisophie ist, daž alles was die  *
  24.  *              Zeichens„tze angeht, ber dieses Modul gemacht wird;    * 
  25.  *              also auch Farbe, Effekte, Rotation etc.  Damit werden   *
  26.  *              alle Informationen an zentraler Stelle verwaltet.       *
  27.  *----------------------------------------------------------------------*)
  28.  
  29. DEFINITION MODULE mtFonts;
  30.  
  31. FROM MagicSys   IMPORT  Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
  32.                         Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
  33.                         Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
  34.                         sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
  35.  
  36.  
  37.  
  38.  
  39.  
  40. IMPORT SYSTEM;
  41.  
  42. CONST   ErrNoFonts =      0;    (* Keine Fonts geladen  *)
  43.         ErrNoGdos =      -1;    (* Kein GDOS            *)
  44.         ErrLessMem =     -2;    (* Kein Speicher        *)
  45.         ErrWorkstation = -3;    (* Workstation nicht ber mtAppl ge”ffnet *)
  46.  
  47. PROCEDURE LoadFonts (handle: sINTEGER): sINTEGER;
  48. (* L„dt GEM-Fonts, wenn m”glich. Dazu muž natrlich ein GDOS pr„sent 
  49.  * sein. Returniert einen Errorcode bzw. die Anzahl der geladenen Fonts.
  50.  *)
  51.  
  52. PROCEDURE UnloadFonts (handle: sINTEGER);
  53. (* Gibt die geladenen Fonts wieder frei. *)
  54.  
  55. CONST   FFIRST = 0;
  56.         FNEXT =  1;
  57.         FPREV =  2;
  58.         FLAST =  3;
  59.  
  60. PROCEDURE FontList (handle, flag: sINTEGER): sINTEGER;
  61. (* Geht entsprechend flag durch die Liste der Fonts. Returniert
  62.  * den Font-ID oder 0, wenn Ende der Liste erreicht.
  63.  *
  64.  * FFIRST = Liefert den ersten Font
  65.  * FNEXT  = N„chster Font in der Liste
  66.  * FPREV  = Vorhergehender Font in der Liste
  67.  *)
  68.  
  69. TYPE tFontinfo = RECORD
  70.                   name:   ARRAY [0..32] OF CHAR;  (* Name des Fonts *)
  71.                   id:     sINTEGER;     (* Font-ID *)
  72.                   color:  sINTEGER;     (* Farbindex *)
  73.                   rot:    sINTEGER;     (* Rotationsrichtung *)
  74.                   halign: sINTEGER;     (* Horizontale Ausrichtung *)
  75.                   valign: sINTEGER;     (* Vertikale Ausrichtung *)
  76.                   chw:    sINTEGER;     (* Zeichenbreite *)
  77.                   chh:    sINTEGER;     (* Zeichenh”he *)
  78.                   boxw:   sINTEGER;     (* Zellenbreite *)
  79.                   boxh:   sINTEGER;     (* Zellenh”he *)
  80.                   effect: sBITSET;      (* Texteffekte *)
  81.                   min:    sINTEGER;     (* Minimale Gr”že des Fonts *)
  82.                   max:    sINTEGER;     (* Maximale Gr”že des Fonts *)
  83.                   point:  sINTEGER;     (* aktuelle Gr”že des Fonts *)
  84.                   width:  sINTEGER;     (* Breite bei FSM-Fonts *)
  85.                   skew:   sINTEGER;     (* Neigung bei FSM-Fonts *)
  86.                   mono:   BOOLEAN;      (* TRUE, wenn Monospaced *)
  87.                   fsm:    BOOLEAN;      (* TRUE, wenn FSM-Font *)
  88.                  END;
  89.  
  90. PROCEDURE FontInfo (handle, font: sINTEGER;  VAR info: tFontinfo);
  91. (* Info ber den Font *)
  92.  
  93. PROCEDURE FontActive (handle: sINTEGER): sINTEGER;
  94. (* Liefert den momentan aktiven Font *)
  95.  
  96. PROCEDURE FontSelect (handle: sINTEGER; font: sINTEGER; actual: BOOLEAN);
  97. (* Selektion eines Fonts. Der Parameter 'actual' bestimmt, ob der Zeichen-
  98.  * satz mit den aktuellen Werten des Vorg„ngers bernommen wird (Gr”že,
  99.  * Farbe, Effekte etc.) - actual = TRUE, oder ob die Werte eingestellt werden
  100.  * sollen, die als letztes fr den neuen Font gltig waren (actual = FALSE). 
  101.  *)
  102.  
  103. PROCEDURE FontSize (handle, size: sINTEGER;
  104.                     VAR cw, ch, bw, bh: sINTEGER): sINTEGER;
  105. (* Bestimmung der Gr”že des aktuellen Fonts in POINTS.
  106.  * cw = Zeichenbreite
  107.  * ch = Zeichenh”he
  108.  * bw = Breite der Zeichenbox
  109.  * bh = H”he der Zeichenbox
  110.  *)
  111.  
  112. PROCEDURE FontDefsize (handle: INTEGER): INTEGER;
  113. (* Stellt die Max-Gr”že DIV 2 des aktuellen Fonts ein. Dies ist in der
  114.  * Regel der Default-Size des Fonts.  
  115.  * Beim Systemfont wird die Gr”že entsprechend der Aufl”sung gesetzt. 
  116.  *)
  117.  
  118. PROCEDURE NextBigger  (handle: INTEGER): INTEGER;
  119. PROCEDURE NextSmaller (handle: INTEGER): INTEGER;
  120. (* Liefern die n„chstm”gliche Fontgr”že des aktuellen Fonts *)
  121.  
  122. PROCEDURE FontColor (handle, color: sINTEGER);
  123. (* Farbe des Fonts einstellen *)
  124.  
  125. PROCEDURE FontEffekt (handle: sINTEGER; effekt: sBITSET);
  126. (* Effekte des Fonts einstellen *)
  127.  
  128. PROCEDURE FontRotate (handle, angle: sINTEGER): sINTEGER;
  129. (* Winkel einstellen, in dem der Font ausgegeben wird. Bei Bitmap-
  130.  * Fonts sind hier nur 0, 90, 180 und 270 Grad m”glich.
  131.  * angle ist in Zehntel Grad anzugeben (1800 fr 180 Grad)
  132.  *)
  133.  
  134. PROCEDURE FontWidth (handle, width: sINTEGER);
  135. (* Bestimmung des Breiten-Verh„ltnisses der Zeichen.  NUR MIT FSM-FONTS!!! *)
  136.  
  137. PROCEDURE FontSkew (handle, skew: sINTEGER);
  138. (* Bestimmung der Neigung der Zeichen.  NUR MIT FSM-FONTS!!! *)
  139.  
  140. PROCEDURE FontExtent (handle: sINTEGER; REF  str: ARRAY OF CHAR;
  141.                       VAR rect: ARRAY OF LOC);
  142. (* Berechnet die Ausdehnung eines Strings.
  143.  * ACHTUNG: In rect wird Platz fr 4 Koordinaten-Paare erwartet, die
  144.  *          das Rechteck beschreiben!
  145.  *)
  146.  
  147. PROCEDURE FontError (): sINTEGER;
  148. (* Liefert nach einer Fontaktion eine Fehlermeldung.  Dabei werden als
  149.  * Grundlage die Fehlercodes von FSM-GDOS benutzt:
  150.  *
  151.  *  NoError =        0
  152.  *  CharNotFound =   1
  153.  *  ReadError =      8
  154.  *  OpenError =      9
  155.  *  BadFileformat = 10
  156.  *  OutOfMemory =   11
  157.  *  MiscError =     -1
  158.  *)
  159.  
  160. END mtFonts.
  161.  
  162.